package com.skycode7.dao;

import com.skycode7.bean.NewsBean;
import com.skycode7.util.DBConnection;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * 封装数据库的增删改查操作
 */
public class NewsDao {
    DBConnection db = new DBConnection();
    private List<NewsBean> list;

    /**
     * 添加新闻
     *
     * @param news
     * @return
     */
    public int add(NewsBean news) {
        Connection conn = db.getConn();//conn代表mysql连接
        String sql = "insert into news values(null,?,?,?,?)";//使用jdbc预处理对象添加
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            //将新闻对象中数据依次绑定到sql命令中
            ps.setString(1, news.getNewsTitle());
            ps.setString(2, news.getNewsContent());
            ps.setString(3, news.getNewsTime());
            ps.setString(4, news.getAdminName());
            return ps.executeUpdate();//执行sql语句 完成数据插入
        } catch (SQLException e) {
            System.out.println("插入news表异常");
        }
        return 0;

    }

    /**
     * 删除功能
     *
     * @param NewsID
     * @return
     */
    public int delect(int NewsID) {
        Connection conn = db.getConn();//conn代表mysql连接
        String sql = "delete from news where NewsID=?";//使用jdbc预处理对象添加
        try {
            preparedStatement ps = (preparedStatement) conn.prepareStatement(sql);
            //将新闻对象中数据依次绑定到sql命令中
            ps.setInt(1, NewsID);

        } catch (SQLException e) {
            System.out.println("删除news表异常");
        }
        return 0;
    }

    public int update(NewsBean news) {
        Connection conn = db.getConn();//conn代表mysql连接
        String sql = "update news set NewsTitle=?,NewsContent=?,NewsTime=?,AdminName=? where NewsID=?";
        //使用jdbc预处理对象添加
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            //将新闻对象中数据依次绑定到sql命令中
            ps.setString(1, news.getNewsTitle());
            ps.setString(2, news.getNewsContent());
            ps.setString(3, news.getNewsTime());
            ps.setString(4, news.getAdminName());
            ps.setInt(5, news.getNewsID());
            return ps.executeUpdate();//执行sql语句 完成数据插入
        } catch (SQLException e) {
            System.out.println("插入news表异常");
        }
        return 0;

    }

    /**
     * 获取新闻数据
     *
     * @param page 传递进来页码 最小1
     * @return List一个新闻集合
     */
    public List<NewsBean> getList(int page) {
        Connection conn = db.getConn();
        String sql = "select * from news limit ?,?";//第一个开始的行数 第二个是查询显示的条数
        List<NewsBean> List = new ArrayList<>();
        try {
            PreparedStatement ps = conn.prepareStatement(sql);// 固定一页显示10条数数据
            ps.setInt(1, (page - 1) * 10);//page为1时行数是0 page为2时 10行
            ps.setInt(2, 10);
            ResultSet rs = ps.executeQuery();//rs是数据查询结果集 全部是字符串
            while (rs.next()) {
                NewsBean news = new NewsBean();
                news.setNewsID(rs.getInt("NewsID"));//rs获取该行新闻ID 通过新闻对象封装方法设置新闻值
                news.setNewsTitle(rs.getString("NewsTitle"));
                news.setNewsContent(rs.getString("NewsContent"));
                news.setNewsTime(Integer.parseInt(rs.getString("NewsTime")));
                news.setAdminName(rs.getString("AdminName"));
                List.add(news);//将设置好的新闻对象放入list中
            }
        } catch (SQLException e) {
            System.out.println("查询news表异常");
        }
        return list;//异常情况返回空集合
    }

    public List<NewsBean> getNewsList(int page) {
        Connection conn = db.getConn();
        String sql = "select * from news limit ?,?";//第一个开始的行数 第二个是查询显示的条数
        List<NewsBean> List = new ArrayList<>();
        try {
            PreparedStatement ps = conn.prepareStatement(sql);// 固定一页显示10条数数据
            ps.setInt(1, (page - 1) * 10);//page为1时行数是0 page为2时 10行
            ps.setInt(2, 10);
            ResultSet rs = ps.executeQuery();//rs是数据查询结果集 全部是字符串
            while (rs.next()) {
                NewsBean news = new NewsBean();
                news.setNewsID(rs.getInt("NewsID"));//rs获取该行新闻ID 通过新闻对象封装方法设置新闻值
                news.setNewsTitle(rs.getString("NewsTitle"));
                news.setNewsContent(rs.getString("NewsContent"));
                news.setNewsTime(Integer.parseInt(rs.getString("NewsTime")));
                news.setAdminName(rs.getString("AdminName"));
                List.add(news);//将设置好的新闻对象放入list中
            }
        } catch (SQLException e) {
        }
        return List;//异常情况返回空集合
    }

    public int updateNews(NewsBean newsBean) {
    }
}